﻿package com.zouloux.core
{
	import com.zouloux.core.base.MovieClipBase;
	import flash.display.DisplayObject;
	import flash.events.Event;
	import flash.events.IEventDispatcher;
	
	/**
	 * L'interface de la classe de base des MovieClip
	 * @author ZoulouX
	 */
	public interface IMovieClip extends IEventDispatcher
	{
		/**
		 * Récupérer l'instance d'un clip via une interface
		 */
		function get displayObject():MovieClipBase
		
		/**
		 * Initialisation d'un clip.
		 * Cette méthode est appelée automatiquement lors de l'ajout à la scène.
		 */
		function init():void;
		
		/**
		 * Récupérer le numéro d'une frame par rapport à son label
		 * @param	pLabel : Le nom du label
		 * @param	pStrict : à définir sur true si la casse du label doit être respectée
		 * @return : renvoie le numéro de la frame, renvoie 0 si la frame n'a pas été trouvée
		 */
		function getFrameByLabel(pLabel:String, pStrict:Boolean = false):uint;
		
		/**
		 * Vérifier si un lavel est disponible, si oui y aller et lire
		 * @param	pLabel : le nom du label
		 * @return : true sur le label à été trouvé
		 */
		function checkAndPlay (pLabel:String):Boolean;
		
		/**
		 * Vérifier si un label est disponible, si oui y aller et s'arrêter
		 * @param	pLabel : le nom du label
		 * @return : true si le label à été trouvé
		 */
		function checkAndStop (pLabel:String):Boolean;
		
		/**
		 * Passer tout devant
		 */
		function bringToFront():void;
		
		/**
		 * Passer au fond
		 */
		function bringToBack():void;
		
		/**
		 * Passer un cran en avant
		 */
		function bringUp():void;
		
		/**
		 * Passer un cran en arrière
		 */
		function bringDown():void;
		
		/**
		 * Libérer l'espace mémoire de ce clip
		 */
		function dispose():void;
	}
}